#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
typedef long long ll;
int ans=0;
map<ll,int> ss;
int a[10]={0,1,2,3,4,5,6,7,8,9};
void DFS(ll x,int i)//x记录上个数的大小，i记录下标 
{
	if(i==10)
	{
		ans++;
		return ;
	}
	if(a[i]==0)
	{	
		if(i==0) DFS(0,i+1);
		return ;
	}
	ll sum=0;
	for(int j=i;j<10;j++)
	{
		sum=sum*10+a[j];
		if(ss[sum]==1&&sum>x)//判断条件是升序排列 
			DFS(sum,j+1);
	}
}
int main()
{	
	for(ll i=1;i<500000;i++)//map记录平方数 
		ss[i*i]=1;
	do{
		DFS(-1,0);
	}while(next_permutation(a,a+10));//全排 
	cout<<ans<<endl;
	return 0;
}